有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何以不同的方式编写这部分代码?

import java.util.*;

public class something {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int kvadratek, a, b;
        a = sc.nextInt();
        b = sc.nextInt();


        --a;
        --b;


        if(a>b) {

            kvadratek=b;
            b=a;
            a=kvadratek;

            System.out.println((a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b));
        }


        else {

            System.out.println(a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b);
        } 
    }
}

我是java编码新手,我有一个问题,我是否可以写这部分

kvadratek=b;
b=a;
a=kvadratek;

不同的是,它会给我与其他部分相同的结果。有没有可能用if,while来做呢?如果我插入,我实际上不需要代码的else部分

kvadratek=b; 
b=a; 
a=kvadratek;

但有没有办法改变这一部分


共 (2) 个答案

  1. # 1 楼答案

    为了避免重复代码,首先要将其提取到一个方法中:

    private static int compute(int a, int b) {
        return (a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b);
    }
    

    现在您希望b是两个数字中最大的一个,而a是另一个。您可以使用Math.maxMath.min代替交换它们:

    a = sc.nextInt() - 1;
    b = sc.nextInt() - 1;
    
    System.out.println(compute(Math.min(a, b), Math.max(a, b));
    
  2. # 2 楼答案

    您可以使用以下选项:

    int k = Math.max(a, b)
    a = Math.min(a, b);
    b = k
    

    在这段代码之后,b将是原始ab之间的较大值,而a将是较小值,因此不再需要if/else